package com.sys.SysSales.service;

import java.util.List;
import com.sys.SysSales.domain.SysSalesSummary;


/**
 * 销售统计Service接口
 * 
 * @author ruoyi
 * @date 2025-09-28
 */
public interface ISysSalesSummaryService 
{
    /**
     * 查询销售统计
     * 
     * @param summaryId 销售统计主键
     * @return 销售统计
     */
    public SysSalesSummary selectSysSalesSummaryBySummaryId(Long summaryId);

    /**
     * 查询销售统计列表
     * 
     * @param sysSalesSummary 销售统计
     * @return 销售统计集合
     */
    public List<SysSalesSummary> selectSysSalesSummaryList(SysSalesSummary sysSalesSummary);

    /**
     * 新增销售统计
     * 
     * @param sysSalesSummary 销售统计
     * @return 结果
     */
    public int insertSysSalesSummary(SysSalesSummary sysSalesSummary);

    /**
     * 修改销售统计
     * 
     * @param sysSalesSummary 销售统计
     * @return 结果
     */
    public int updateSysSalesSummary(SysSalesSummary sysSalesSummary);

    /**
     * 批量删除销售统计
     * 
     * @param summaryIds 需要删除的销售统计主键集合
     * @return 结果
     */
    public int deleteSysSalesSummaryBySummaryIds(Long[] summaryIds);

    /**
     * 删除销售统计信息
     * 
     * @param summaryId 销售统计主键
     * @return 结果
     */
    public int deleteSysSalesSummaryBySummaryId(Long summaryId);

    /**
     * 按时间条件查询销售统计信息
     * 支持：自定义时间段、近一个月、近一年、全部数据
     *
     * @param beginTime  自定义开始时间（可为null）
     * @param endTime    自定义结束时间（可为null）
     * @param monthFlag  近一个月标记（可为null，非null即生效）
     * @param yearFlag   近一年标记（可为null，非null即生效）
     * @return 销售统计结果
     */
    SysSalesSummary getSalesStatByTime(
            String beginTime,
            String endTime,
            Boolean dayFlag,
            Boolean monthFlag,
            Boolean yearFlag
    );


//    /**
//     * 按时间查询热销产品
//     */
//    SysSalesSummaryDto getTopSellingProduct(
//            Boolean dayFlag,
//            Boolean monthFlag,
//            Boolean yearFlag,
//            String startTime,
//            String endTime
//    );

//    /**
//     * 按时间查询销售数量
//     */
//    String getSalesVolumeByTimeRange(
//            Boolean dayFlag,
//            Boolean monthFlag,
//            Boolean yearFlag,
//            String startTime,
//            String endTime
//    );

//    public  List<SysSalesSummary> selectSysSalesSummaryLista(SysSalesSummary sysSalesSummary);
}
